home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / machine / astrocde.c < prev    next >
C/C++ Source or Header  |  2000-04-23  |  2KB  |  86 lines

  1. /**************************************************************************
  2.  
  3.     Interrupt System Hardware for Bally/Midway games
  4.  
  5.      Mike@Dissfulfils.co.uk
  6.  
  7. **************************************************************************/
  8.  
  9. #include "driver.h"
  10.  
  11.  
  12. READ_HANDLER( gorf_timer_r )
  13. {
  14.     static int Skip=0;
  15.     unsigned char *RAM = memory_region(REGION_CPU1);
  16.  
  17.  
  18.     if ((RAM[0x5A93]==160) || (RAM[0x5A93]==4))     /* INVADERS AND    */
  19.     {                                                /* GALAXIAN SCREEN */
  20.         if (cpu_get_pc()==0x3086)
  21.         {
  22.             if(--Skip==-1)
  23.             {
  24.                 Skip=2;
  25.             }
  26.         }
  27.  
  28.            return Skip;
  29.     }
  30.     else
  31.     {
  32.         return RAM[0xD0A5];
  33.     }
  34.  
  35. }
  36.  
  37.  
  38. /****************************************************************************
  39.  * Seawolf Controllers
  40.  ****************************************************************************/
  41.  
  42. /*
  43.  * Seawolf2 uses rotary controllers on input ports 10 + 11
  44.  * each controller responds 0-63 for reading, with bit 7 as
  45.  * fire button.
  46.  *
  47.  * The controllers look like they returns Grays binary,
  48.  * so I use a table to translate my simple counter into it!
  49.  */
  50.  
  51. static const int ControllerTable[64] = {
  52.     0  , 1  , 3  , 2  , 6  , 7  , 5  , 4  ,
  53.     12 , 13 , 15 , 14 , 10 , 11 , 9  , 8  ,
  54.     24 , 25 , 27 , 26 , 30 , 31 , 29 , 28 ,
  55.     20 , 21 , 23 , 22 , 18 , 19 , 17 , 16 ,
  56.     48 , 49 , 51 , 50 , 54 , 55 , 53 , 52 ,
  57.     60 , 61 , 63 , 62 , 58 , 59 , 57 , 56 ,
  58.     40 , 41 , 43 , 42 , 46 , 47 , 45 , 44 ,
  59.     36 , 37 , 39 , 38 , 34 , 35 , 33 , 32
  60. };
  61.  
  62. READ_HANDLER( seawolf2_controller1_r )
  63. {
  64.     return (input_port_0_r(0) & 0xc0) + ControllerTable[input_port_0_r(0) & 0x3f];
  65. }
  66.  
  67. READ_HANDLER( seawolf2_controller2_r )
  68. {
  69.     return (input_port_1_r(0) & 0xc0) + ControllerTable[input_port_1_r(0) & 0x3f];
  70. }
  71.  
  72.  
  73. static int ebases_trackball_select = 0;
  74.  
  75. WRITE_HANDLER( ebases_trackball_select_w )
  76. {
  77.     ebases_trackball_select = data;
  78. }
  79.  
  80. READ_HANDLER( ebases_trackball_r )
  81. {
  82.     int ret = readinputport(3 + ebases_trackball_select);
  83.     logerror("Port %d = %d\n", ebases_trackball_select, ret);
  84.     return ret;
  85. }
  86.